Chapter 4: Exercises

  1. (*)Simple RE for 'or': Regular Expression X*(Y|Z)*(X|Y) 無法描述下列哪一個字串?
    1. XYXZY
    2. XYZZY
    3. XZYYX
    4. XZYZY
    Answer: (a)
  2. (*)Meanings of regular expressions: Please use your own words to explain the meanings of the following regular expressions.
    1. 'b..r'
    2. 's[aeiou]t'
    3. '[^\^]'
    4. 'b[aeiou]{2,3}t'
    5. '(\d{4}-){3}\d{4}'
    6. '(Chapter|Section) [1-9]\d{0,1}'
  3. 請使用通用運算式,將下句改成過去式。
    He is a good boss who takes care of his employees.
  4. 請使用單一通用運算式,將下句中的所有「sleep tight」改成「work hard」,並保持單複數及時式之一致。
    I sleep tight, he sleeps tight, we are all sleeping tight.
  5. 底下是一個檢查 email 格式的通用表示法 ^[\w-]+(\.[\w-]+)*@[a-zA-Z-_]+(\.[a-zA-Z-_]+)+$ 請問以下哪個選項不符合此表示法?
    1. abc.123@gmail.com
    2. abc_123@gmail.com
    3. abc#123@gmail.com
    4. abc..123aha@gmail.com
  6. 底下是一個檢查 email 格式的通用表示法 ^\w((\.)?\w)*@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z]+$ 請問以下哪個選項不符合此表示法?
    1. gogog_ohaha@livemail.tw
    2. gog.ogoh+aha@livemail.tw
    3. gogogohaha@liv.em-ail.tw
    4. gogogoh__aha@livemail.tw
  7. 請寫一個 MATLAB 程式 extractHttp.m,讀入 regExp.htm 檔案(位於本書所附光碟),並由此程式印出每一列包含「http=」的內文。
  8. 請寫一個 MATLAB 函數 isFunction.m,其輸入是一個 M 檔案的檔案名稱(可以包含絕對或相對路徑),若此 M 檔案是一個函數,則 isFunction 的輸出為 1,否則輸出為 0。(在此習題中,假設我們可以根據 M 檔案的第一列來判斷此檔案是底稿或是函數:若是函數,第一列的第一個英文字是 function,否則就是底稿。)
  9. 請根據 linkExtract.m 寫一個新程式 linkExtract2.m,使其能夠由 regExp2.htm 正確地抓出三個正確的連結網址與連結文字。(請務必刪除不必要的空白與換列。)
  10. 請根據 linkExtract.m 寫一個新程式 linkExtract3.m,使其能夠由 regExp3.htm 正確地抓出三個正確的連結網址與連結文字。(請務必刪除不必要的空白與換列。)
  11. 請根據 linkExtract.m 寫一個新程式 linkExtract4.m,使其能夠由 regExp4.htm 正確地抓出三個正確的連結網址與連結文字。(請務必刪除不必要的空白與換列。)
  12. 請根據 linkExtract.m 寫一個新程式 linkExtract5.m,使其能夠由 regExp5.htm 正確地抓出三個正確的連結網址與連結文字。(請務必刪除不必要的空白與換列。)
  13. Modify webpages: 請寫一個程式 insertTarget.m,可以讀入 regExp.htm 後,在每個連結中加入「target=_blank」,以便使用者點選連結後,可以顯示在新的瀏覽視窗中。(請將修改後的網頁寫入檔案 regExpNew.htm。)
  14. Extract emails: 請寫一個函數 emailExtract.m,可以讀入一個 URL 網址,然後從此網址抽出所有的 email 帳號,並以字串異值陣列傳回。(提示:有關於讀取網頁之功能,請直接使用 MATLAB 提供的 urlread 指令。)請注意,你的程式碼必須滿足下列規範:
    1. 出現在 HTML 的註解內的 email,不須要抓出。(換句話說,你必須先刪除 HTML 的註解,然後再進行 email 抽取。HTML 註解是以「<!--」開始,以「-->」 結尾。)
    2. 除了註解外,請抓出所有的 email 帳號,無論它們是可連結或不可連結。
    3. 在回傳所有 email 帳號前,請先使用 unique 指令來進行唯一化及排序。
    在繳交此作業時,請先以下列網址來測試你的程式的正確性:

Part 2


MATLAB程式設計:進階篇